1. Field of the Invention
This invention relates to the field of digital to analog conversion and, in particular, to converters adapted for use in disk drive controllers and similar applications, such as many servo systems, where a need exists for an output voltage function of the form V.sub.out = V.sub.1 + V.sub.2 (1-2D) or V.sub.out = V.sub.1 - V.sub.2 (1-2D), where both V.sub.1 and V.sub.2 may be supplied as input variables and D is function from 0 to 1, supplied as a digital value to control a DAC.
2. Discussion of the Prior Art
Digital-to analog converters are needed in many applications. Of particular interest herein is their use in control systems, such as electro-mechanical servo mechanisms. In recent years, the use of digital servo techniques has become widespread to control disk drive read/write head positioners (i.e., actuators) and spindle motors. Handling the analog signals for driving such transducers requires the use of analog-to digital converters (ADC's), digital to analog converters (DAC's), operational amplifiers, logic functions and discrete components. The combination of these elements can take up a large section of precious board space in a hard disk drive system.
In a hard disk drive system, the disk heads produce low level analog signals that are amplified and are subsequently passed through detection and demodulation circuits prior to being converted to digital form. The digital data is then supplied to a servo micro controller that computes position and velocity of the read/write head. The micro-controller executes a control algorithm which takes as input the position and velocity information and outputs control data to a DAC which then drives the power amplifier that operates the read/write head actuator, to position the read/write head accordingly. One basic need for disk drive applications, therefore, is a DAC which, at half scale, presents an output sitting at some defined bias point V.sub.bias. This bias voltage establishes a zero-error position of the read/write head. With a half scale digital code applied to the DAC, the head is presumed to be directly over the data track. Feedback acts to increase or decrease the DAC code, to keep the head centered over the data. The magnitude of the DAC output voltage swing obviously depends on the individual system parameters and is essentially another independent variable, V.sub.swing. An ideal disk drive DAC thus provides an output voltage given either by the formula V.sub.out = V.sub.bias + V.sub.swing (114 2D) or by the formula V.sub.out = V.sub.bias - V.sub.swing (1-2D), where D represents the equivalent fractional value of the full scale DAC resolution indicated by the digital code applied to the DAC and ranges between 0 and 1. Hereinafter, therefore, we shall use the simplified expression "V.sub.out = V.sub.bias .+-. V.sub.swing " as a way of saying that the function is V.sub.out = V.sub.bias + V.sub.swing (1-2D) or V.sub.out = V.sub.bias - V.sub.swing (1- 2D). V.sub.swing defines the span of the signal, V.sub.bias is a DC reference level on which the V.sub.swing signal is superimposed and the composite signal can thus span the range between V.sub.bias - V.sub.swing to V.sub.bias + V.sub.swing (i.e., as D varies between 1 and 0).
The disk drive application is a specific case of the more general situation in which a DAC is needed to supply an output which is offset from zero (by some predetermined amount) when a zero code input is provide to the DAC.
Traditional ADC's and DAC's require additional signal conditioning circuits to interface with these signals, since they only handle ground referenced or differential input signals. In order to get an output range of V.sub.bias .+-. V.sub.swing from a conventional DAC such as the model AD7569 DAC from Analog Devices, Inc., of Norwood, Mass., at least three solutions exist. The first solution is shown in FIG. 1. There, the circuit 10 provides an output range of V.sub.bias .+-. 2.5 volts. The circuit is thus limited in that it can provide only a predefined .+-. 2.5 volt swing, rather than a swing which is arbitrarily set (within some predetermined limits) by application of a variable voltage V.sub.swing. Additionally, an external reference of +1.25 volts has to be provided. If the external reference does not match the internal reference, the swing will not be symmetrical about V.sub.bias. The restricted swing can be overcome by the circuit 20 of FIG. 2. This circuit provides an additional op-amp 22 to generate a zero to V.sub.swing output range from the zero to +1.25 volt output of the DAC 24. This circuit, however, also has the problem of matching the two reference voltages, since the output of op-amp 26 will not swing symmetrically about V.sub.bias unless the V.sub.swing /2 signal applied at node 28 is matched to the output of op-amp 22. An alternative is the circuit 30 of FIG. 3 which, instead of requiring a V.sub.swing /2 voltage requires a V.sub.bias - V.sub.swing voltage at the input. However, an additional operational amplifier (not shown) is probably required to generate this difference voltage. Again, the circuit suffers from having to match the internal reference (gain adjusted to produce V.sub.swing DAC output) with the external V.sub.swing voltage.
An approach published in CMOS DAC Application Guide, Analog Devices, Inc., Norwood, Mass., 1984 at 20 (Analog Devices Pub. No. G872-30 10/84), is shown in FIG. 4. There, a voltage switching circuit is shown. The OUT2 terminal of DAC 31 is driven by a lower offset voltage V.sub.2 via buffer 32, and the OUT1 terminal is driven by a full scale output voltage via buffer 33. If the DAC ladder termination resistor is connected to the AGND terminal, the output voltage V.sub.out for a given digital input code D is given by: EQU V.sub.out =D(V.sub.1 -V.sub.2)+(1-2.sup.-n)V.sub.2. EQU Thus, EQU V.sub.out =V.sub.2 (1-2.sup.-n)when D=0 and V.sub.out =V.sub.1 when D=1-.sup.-n.
If the ladder termination resistor is connected to the DAC's OUT2 terminal, the output voltage is given by: EQU V.sub.out =D(V.sub.1 -V.sub.2)+V.sub.2. EQU Thus, ##EQU1##
Consequently, the end points of the span are V.sub.2 and approximately V.sub.1. In other words, the inputs are not conveniently V.sub.bias and V.sub.swing but, rather, are functions which must be derived from those variables (using additional components, not shown). Moreover, the outputs of buffers 32 and 33 should never go negative with respect to OUT2 or parasitic action may damage the DAC.
Another approach is shown in FIG. 5, which is a variant of the circuit of FIG. 4 in which V.sub.1 = V.sub.bias + V.sub.swing and V.sub.2 = V.sub.bias -V.sub.swing. A resistive divider formed of resistors 42 and 44 supplies via buffer amplifier 46 a voltage V.sub.bias + V.sub.swing to the reference voltage input of a DAC 50 and to the anode of a Zener diode 52. The cathode of the Zener diode 52 is connected to ground through a resistor 54 and to the analog ground terminal (AGND) of DAC 50. When V.sub.bias + V.sub.swing is adequate to keep the diode 52 conducting, the output V.sub.drive = V.sub.bias .+-. V.sub.swing. Of course, this circuit is limited in that V.sub.swing is established by the Zener diode 52 (where V.sub.zener = 2 V.sub.swing) and cannot be supplied as a variable input on a signal lead. Additionally, V.sub.swing must be a positive voltage. FIG. 5 essentially shows an approach published in M. Byrne, AD7224 Provides Programmable Voltages over Varying Ranges, Analog Devices, Inc., Norwood, Mass. 198 , Analog Devices Application Note No. E910-15-5/85.
For disk drive (and many other servo) applications, the ability to provide both V.sub.bias and V.sub.swing as variable values is important. Further, the DAC should be capable of operating from a standard single sided supply voltage in order to avoid creating an unnecessary need for a second supply voltage. A DAC requiring both positive and negative supplies would, for most applications, not be commercially acceptable.